commonlibsse_ng\re\p\PlayerCharacter/
runtime_info.rs

1use crate::re::BSCoreTypes::RefHandle;
2use crate::re::BSPointerHandle::{ActorHandle, ObjectRefHandle};
3use crate::re::BSTArray::BSTArray;
4use crate::re::BSTSmartPointer::BSTSmartPointer;
5use crate::re::Crime::CRIME_TYPE_CEnum;
6use crate::re::NiAVObject::NiAVObject;
7use crate::re::NiSmartPointer::NiPointer;
8use crate::re::PlayerCharacter::crime::TeleportPath;
9use crate::re::PlayerCharacter::skill::PlayerSkills;
10use crate::re::TESBoundObject::TESBoundObject;
11use crate::re::TESForm::TESForm;
12use crate::re::{AlchemyItem, BSLight, BipedAnim, CombatGroup, NiNode, TESClass};
13
14const _: () = assert!(7 == CRIME_TYPE_CEnum::count());
15
16#[repr(C, packed(4))]
17pub struct INFO_RUNTIME_DATA {
18    // dummy: [u8; 20],
19    pub sleepSeconds: u32,                                   // 014
20    pub largeBiped: BSTSmartPointer<BipedAnim>,              // 018
21    pub firstPerson3D: NiPointer<NiNode>,                    // 020
22    pub eyeHeight: f32,                                      // 028
23    pub greetTimer: f32,                                     // 02C
24    pub encumberedTimer: f32,                                // 030
25    pub powerAttackTimer: f32,                               // 034
26    pub hoursToSleep: i32,                                   // 038
27    pub amountStolenSold: i32,                               // 03C
28    pub valueStolen: u32,                                    // 040
29    pub lastRiddenMount: ActorHandle,                        // 044
30    pub lightTarget: ActorHandle,                            // 048
31    pub sortActorDistanceTimer: f32,                         // 04C
32    pub sitHeadingDelta: f32,                                // 050 only in SSE, VR needs adjustment
33    pub playerMapMarker: ObjectRefHandle,                    // 054
34    pub playerMarkerPath: *mut TeleportPath,                 // 058
35    pub skillTrainingsThisLevel: u32,                        // 060
36    pub unk064: u32,                                         // 064
37    pub defaultClass: *mut TESClass,                         // 068
38    pub unk070: u64,                                         // 070
39    pub crimeCounts: [u32; 7],                               // 078  7: CRIME_TYPE::TOTAL
40    pub unk094: u32,                                         // 094
41    pub pendingPoison: *mut AlchemyItem,                     // 098
42    pub lastPlayingTimeUpdate: i64,                          // 0A0
43    pub totalPlayingTime: i64,                               // 0A8
44    pub characterSeed: i32,                                  // 0B0
45    pub unk0B4: u32,                                         // 0B4
46    pub lastKnownGoodLocation: *mut TESForm,                 // 0B8
47    pub unk0C0: u32,                                         // 0C0
48    pub unk0C4: u32,                                         // 0C4
49    pub firstPersonLight: NiPointer<BSLight>,                // 0C8
50    pub thirdPersonLight: NiPointer<BSLight>,                // 0D0
51    pub dropAngleMod: f32,                                   // 0D8
52    pub lastDropAngleMod: f32,                               // 0DC
53    pub skills: *mut PlayerSkills,                           // 0E0
54    pub autoAimActor: ActorHandle,                           // 0E8
55    pub unk0EC: RefHandle,                                   // 0EC
56    pub unk118: u64,                                         // 0F0
57    pub targeted3D: NiPointer<NiAVObject>,                   // 0F8
58    pub combatGroup: *mut CombatGroup,                       // 100
59    pub actorsToDisplayOnTheHUDArray: BSTArray<ActorHandle>, // 108
60    pub advanceObject: *mut TESForm,                         // 120
61    pub lastOneHandItems: [*mut TESBoundObject; 2],          // 128
62    pub teammateCount: u32,                                  // 138
63    pub combatTimer: f32,                                    // 13C
64    pub yieldTimer: f32,                                     // 140
65    pub chaseTimer: f32,                                     // 144
66    pub drawSheatheSafetyTimer: f32,                         // 148
67    pub unk14C: u32,                                         // 14C
68}
69const _: () = assert!(core::mem::size_of::<INFO_RUNTIME_DATA>() == 0x13C);
70
71#[repr(C, packed(4))]
72pub struct VR_INFO_RUNTIME_DATA {
73    pub sleepSeconds: u32,                                   // 0xFE0
74    pub unkFE4: u32,                                         // 0xFE4
75    pub largeBiped: BSTSmartPointer<BipedAnim>,              // 0xFE8
76    pub firstPerson3D: NiPointer<NiNode>,                    // 0xFF0
77    pub eyeHeight: f32,                                      // 0xFF8
78    pub greetTimer: f32,                                     // 0xFFC
79    pub encumberedTimer: f32,                                // 0x1000
80    pub powerAttackTimer: f32,                               // 0x1004
81    pub hoursToSleep: i32,                                   // 0x1008
82    pub amountStolenSold: i32,                               // 0x100C
83    pub valueStolen: u32,                                    // 0x1010
84    pub lastRiddenMount: ActorHandle,                        // 0x1014
85    pub lightTarget: ActorHandle,                            // 0x1018
86    pub sortActorDistanceTimer: f32,                         // 0x101C
87    pub playerMapMarker: ObjectRefHandle,                    // 0x1020
88    pub pad1024: u32,                                        // 0x1024
89    pub playerMarkerPath: *mut TeleportPath,                 // 0x1028
90    pub skillTrainingsThisLevel: u32,                        // 0x1030
91    pub unk1034: u32,                                        // 0x1034
92    pub defaultClass: *mut TESClass,                         // 0x1038
93    pub unk1040: u64,                                        // 0x1040
94    pub crimeCounts: [u32; CRIME_TYPE_CEnum::count()],       // 0x1048
95    pub unk964: u32,                                         // 0x1064
96    pub pendingPoison: *mut AlchemyItem,                     // 0x1068
97    pub lastPlayingTimeUpdate: i64,                          // 0x1070
98    pub totalPlayingTime: i64,                               // 0x1078
99    pub characterSeed: i32,                                  // 0x1080
100    pub unk984: u32,                                         // 0x1084
101    pub lastKnownGoodLocation: *mut TESForm,                 // 0x1088
102    pub unk990: u32,                                         // 0x1090
103    pub unk994: u32,                                         // 0x1094
104    pub firstPersonLight: NiPointer<BSLight>,                // 0x1098
105    pub thirdPersonLight: NiPointer<BSLight>,                // 0x10A0
106    pub dropAngleMod: f32,                                   // 0x10A8
107    pub lastDropAngleMod: f32,                               // 0x10AC
108    pub skills: *mut PlayerSkills,                           // 0x10B0
109    pub autoAimActor: ActorHandle,                           // 0x10B8
110    pub unk9BC: RefHandle,                                   // 0x10BC
111    pub unk9C0: u64,                                         // 0x10C0
112    pub targeted3D: NiPointer<NiAVObject>,                   // 0x10C8
113    pub combatGroup: *mut CombatGroup,                       // 0x10D0
114    pub actorsToDisplayOnTheHUDArray: BSTArray<ActorHandle>, // 0x10D8
115    pub advanceObject: *mut TESForm,                         // 0x10F0
116    pub lastOneHandItems: [*mut TESBoundObject; 2],          // 0x10F8
117    pub teammateCount: u32,                                  // 0x1108
118    pub combatTimer: f32,                                    // 0x110C
119    pub yieldTimer: f32,                                     // 0x1110
120    pub chaseTimer: f32,                                     // 0x1114
121    pub drawSheatheSafetyTimer: f32,                         // 0x1118
122    pub unk111C: u32,                                        // 0x111C
123}
124const _: () = assert!(core::mem::size_of::<VR_INFO_RUNTIME_DATA>() == 0x140);